// class Color{
//   #values;
//   constructor(r, g, b){
//     this.#values = [r, g, b]
//   }
//   getValues() {
//     return this.#values;
//   }
//   getRed() {
//     return this.#values[0];
//   }
//   readDifference(anotherColor) {
//     if (!(#values in anotherColor)) {
//       throw new TypeError("Color instance expected");
//     } else {
//       return this.#values[0] - anotherColor.#values[0]
//     }
//   }
// }
// let col1 = new Color(255, 0, 0);
// let col2 = new Color(100, 0, 0);
// let col3 = {
//   '#values': [200, 0, 0]
// }
// console.log(col2.getValues());
// console.log(col3);
// console.log(col1.readDifference(col3), 'difference');     

/**
 * super 关键字
 */
// class Animal{
//   constructor(name) {
//     this.name = name;
//   }
//   makeSound() {
//     console.log('animals is barking');
//   }
// }

// class Dog extends Animal {
//   constructor(name, breed) {
//     super(name);
//     this.breed = breed;
//   }
//   makeSound() {
//     super.makeSound();
//     console.log('wolf!!!');
//   }
// }
// let dog = new Dog('wang', 'breed');
// console.log(dog);
// dog.makeSound();



/**
 * 派生类 extends 继承
 */
// class Color{
//   #color;
//   constructor(r, g, b) {
//     this.#color = [r, g, b];
//   }
//   get color() {
//     return this.#color
//   }
//   get red() {
//     return this.#color[0]
//   }
//   set red(value) {
//     if (value < 0 || value > 255) {
//       throw new RangeError("red 值必须在 0 与 255 之间");
//     }
//     this.#color[0] = value;
//   }
//   toString() {
//     return this.#color.join(',')
//   }
// }

// class ColorWithAlpha extends Color {
//   #alpha;
//   constructor(r, g, b, a) {
//     super(r, g, b);
//     this.#alpha = a;
//   }
//   get alpha() {
//     return this.#alpha;
//   }
//   set alpha(value) {
//     this.#alpha = value;
//   }
//   toString() {
//     return `${super.toString()},${this.#alpha}`
//   }
// }

// let colorWithAlpha1 = new ColorWithAlpha(255, 0, 0, 0.1);
// colorWithAlpha1.alpha = 0.5;
// console.log(colorWithAlpha1.alpha);
// console.log(colorWithAlpha1.red);
// console.log(colorWithAlpha1.toString());

function incrementDay(date) {
  return date.setDate(date.getDate() + 1);
}
const date = new Date(); // 2019-06-19
const newDay = incrementDay(date);
console.log(newDay); // 2019-06-20
// 旧日期也被修改了！？
console.log(date); // 2019-06-20